﻿using Abp.Application.Services;
using ARchGL.Platform.Mpp.InputModels;
using System;
using System.Collections.Generic;
using System.Text;
using WebApiClient;
using WebApiClient.Attributes;
using WebApiClient.Parameterables;

namespace ARchGL.Platform.Mpp
{
    public interface IMppAppService : IApplicationService
    {
        #region MppProject

        /// <summary>
        /// 创建进度
        /// </summary>
        /// <returns></returns>
        ITask<AjaxResponseMpp<CreateMppDto>> CreateMppProject(Guid projectId, CreateMppProjectInput input);

        /// <summary>
        /// 编辑进度
        /// </summary>
        /// <returns></returns>
        ITask<AjaxResponseMpp<dynamic>> ModifyMppProject(Guid projectId, ModifyMppProjectInput input);

        /// <summary>
        /// 删除进度项
        /// </summary>
        /// <param name="projectId"></param>
        /// <returns></returns>
        ITask<AjaxResponseMpp<dynamic>> RemoveMppPorject(Guid projectId);

        #endregion

        #region MppTask

        ///// <summary>
        ///// 创建项目进度任务
        ///// </summary>
        ///// <param name="projectId"></param>
        ///// <returns></returns>
        //ITask<AjaxResponseMpp<dynamic>> CreateMppPorjectTask(Guid projectId);

        ///// <summary>
        ///// 修改项目进度任务
        ///// </summary>
        ///// <param name="projectId"></param>
        ///// <returns></returns>
        //ITask<AjaxResponseMpp<dynamic>> ModifyMppPorjectTask(Guid projectId, Guid taskId);

        ///// <summary>
        ///// 修改项目进度任务
        ///// </summary>
        ///// <param name="projectId"></param>
        ///// <returns></returns>
        //ITask<AjaxResponseMpp<dynamic>> RemoveMppPorjectTask(Guid projectId, Guid taskId);

        /// <summary>
        /// 新增/修改/删除项目进度任务
        /// </summary>
        /// <param name="projectId"></param>
        /// <returns></returns>
        [Timeout(10000)]
        [HttpPut("/mpp/api/v1.0/mpp/project/{projectId}/batch")]
        [JsonReturn]
        ITask<AjaxResponseMpp<dynamic>> PutMppPorjectTask(Guid projectId, [JsonContent] dynamic input);

        #endregion
    }
}
